The basic principle of high availability is to eliminate single points of failure or availability weak points by providing redundancy. From an end-user perspective, the availability requirement is usually defined on a high-level process such as order processing or accounts receivable. These kinds of high-level processes are running on the Information Technology (IT) infrastructure and each process may cross different components in the IT infrastructure. Taking the typical J2EE (Java 2 Enterprise Edition) application as the example, it may cross three-tiered IT infrastructure: web tier, middleware tier, database tier. Therefore, the HA requirement of a high-level process is usually satisfied by several different low level IT components working together. To provide a global HA solution for a group of high-level processes with the minimum cost is a significant challenge.
In other words, the challenges can be interpreted as how to deliver cost-effective solutions for each component in the infrastructure according to different high-level availability requirements from different end-user processes. For example, if the HA capability of a component is not enough, it could result in costly outages, but if the HA capability is too much, it could be an expensive waste.
Accordingly, it would be highly desirable to appropriately perform availability analysis over the distributed IT deployment infrastructure in conjunction with high-level requirements, and further plan for high availability solutions over the deployed components in the IT infrastructures.